home *** CD-ROM | disk | FTP | other *** search
- /*
- ** $VER: ABook.AMIRX V00.01 (30.12.95)
- **
- ** © 1995 Joerg Krause
- **
- ** $PROGRAMNAME:
- ** ABook.AMIRX
- **
- ** FUNCTION:
- ** Script for Address-Book and AmIRC V0.77 and higher.
- **
- ** Parses the /whois command and add the realname and the E-Mail to
- ** Address-Book's database.
- **
- ** Put this script in PROGDIR:rexx/ and add this as an alias with the
- ** command: "/alias ABOOK /rx ABook %p"
- **
- ** $HISTORY:
- **
- ** 30.12.95 : V00.01 : initial release
- **
- **
- */
-
-
- OPTIONS RESULTS
- SIGNAL ON SYNTAX
-
- if ~show('P','ABOOK_SERVER') then do
- exit 10
- end
-
- parse arg nick
-
- /* send the /whois command */
- if nick ~="" then do
- 'SAY "/WHOIS "'||nick
- found = 0
- do until found =1
- 'GETLINE'
- sep=pos(' ', LINE.REST)
- if sep ~= 0 then
- do
- Nickname=left(LINE.REST, sep)
- if Nickname =nick then do
- found=1
- end
- end
- end
- /* Seems to be the /whois line */
- /* Now seperate the contents */
- sep1 = pos(' ',LINE.REST,sep+1)
- Email1 = substr(LINE.REST,sep+1,sep1-(sep+1))
- sep2 = pos(' ',LINE.REST,sep1+1)
- Email2 = substr(LINE.REST,sep1+1,sep2-(sep1+1))
- eaddr = EMAIL1||'@'||EMAIL2
- sep3 = lastpos(':',LINE.REST)
- Name = substr(LINE.REST,sep3+1)
-
- /* parse given args */
- sep=lastpos(' ', Name)
- if sep = 0 then
- do
- prename = ''
- surname = Name
- end
- else
- do
- prename = left(Name, sep-1)
- surname = substr(Name, sep+1)
- end
- incomment = ''
- /* search for an existing entry */
- address 'ABOOK_SERVER'
- 'SEARCH '||eaddr||' NOCASE EMAIL STEM=ABDATA.'
- if RC = 0 then
- do
- if ABDATA.COUNT > 0 then
- do
- 'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK"',
- ' PROMPT="There is allready an entry with email-address\n\33c\338'||eaddr||'\330\nin the database !"'
-
- signal done
- end
- end
- lock = -1
- 'SEARCH '||surname||' NOCASE LAST STEM=ABDATA.'
- if RC=0 then
- do
- if ABDATA.COUNT > 0 then
- do
- if ABDATA.COUNT > 1 then
- do
- if prename <> '' then
- do
- /* hmpf, multiple occurences... */
- 'SEARCH ||'prename'|| NOCASE FIRST STEM=ABMULT.'
- if RC=0 then
- do
- if ABDATA.COUNT > 0 then
- do
- if ABDATA.COUNT > 1 then
- do
- 'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK"',
- 'PROMPT="Sorry, too many matching entries\nin database. Couldn''t add !"'
-
- signal done
- end
- else
- do
- entry = 1
- lock = 0
- do while ABMULT.1 <> ABDATA.entry
- entry = entry + 1
- if entry > ABDATA.COUNT then
- do
- /* hm, no matching entry ? Maybe prename is an abbrev, but who cares :-) */
- lock = -1
- leave
- end
- end
- if lock <> -1 then
- lock = ABDATA.entry
- end
- end
- end /* found matching entry via pre- & surname */
- end
- else
- do
- 'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK"',
- 'PROMPT="Sorry, too many matching entries\nin database. Couldn''t add !"'
-
- signal done
- end
- end
- else
- do
- /* one matching entry, append email and comment */
- lock = ABDATA.1
- end
- end /* search for lock */
- if lock == -1 then
- do
- /* add */
- drop ADDR.
- ADDR.LAST = surname
- ADDR.FIRST = prename
- ADDR.EMAIL.COUNT = 1
- ADDR.EMAIL.1.ADR = eaddr
- ADDR.EMAIL.1.DES = incomment
- 'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_Add|_Cancel"',
- 'PROMPT="Add entry\nName : \338'||ADDR.FIRST||' '||ADDR.LAST||'\330\nEmail : \338',
- ||eaddr||' '||incomment||'\330\nto the database ?"'
-
- if RC = 0 then
- if RESULT = 1 then
- do
- 'ADD STEM=ADDR.'
- 'SAVE'
- end
- signal done
- end
- else
- do
- /* append */
- drop ADDR.
- 'LOCK '||lock
- 'QUERY STEM=ADDR.'
- emailno = ADDR.EMAIL.COUNT + 1
- ADDR.EMAIL.COUNT = emailno
- ADDR.EMAIL.emailno.ADR = eaddr
- ADDR.EMAIL.emailno.DES = incomment
- 'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_Append|_Cancel"',
- 'PROMPT="Append to entry\nName : \338'||ADDR.FIRST||' '||ADDR.LAST||'\330\nEmail : \338',
- ||eaddr||' '||incomment||'\330\nto the database ?"'
-
- if RC = 0 then
- if RESULT = 1 then
- do
- 'EDIT STEM=ADDR.'
- 'SAVE'
- end
- 'UNLOCK '||lock
- end
- end
- end
-
-
- done:
- exit
-
- SYNTAX:
- exit 20
-
-